<?php

namespace app\batch;

use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\facade\Debug;
use app\models\{Region};
use think\Db;
use think\facade\Log;

class Regions extends Command
{
    protected $open = false;
    protected function configure()
    {
        $this->setName('Regions')->setDescription('地址库管理');
    }

    protected function execute(Input $input, Output $output)
    {
        $this->doCron();
        die();
    }

    protected function doCron()
    {
        ini_set('max_execution_time', 0);
        //添加一级省市区
        // $data = array(
        //     'fid' => 0,
        //     'key' => 'f9ba465deeceb98812b17b36c283f970'
        // );
        // $result = api_curl('http://apis.juhe.cn/xzqh/query', $data, 0);
        // $result = json_decode($result, true);
        // foreach ($result['result'] as $results) {
        //     $have = Region::where(['code' => $results['id'], 'level' => 1])->find();
        //     if (empty($have)) {
        //         Db::startTrans();
        //         try {
        //             Region::insert(['code' => $results['id'], 'level' => 1, 'name' => $results['name'], 'zx' => 0]);
        //             Db::commit();
        //         } catch (\Exception $e) {
        //             dump($e->getMessage());
        //             Db::rollback();
        //         }
        //     }
        // }
        //二级
        // $list = Region::where('level', 1)->select();
        // foreach ($list as $results) {
        //     $data = array(
        //         'fid' => $results['code'],
        //         'key' => 'f9ba465deeceb98812b17b36c283f970'
        //     );
        //     $result = api_curl('http://apis.juhe.cn/xzqh/query', $data, 0);
        //     $result = json_decode($result, true);
        //     foreach ($result['result'] as $result_son) {
        //         try {
        //             if (strlen($result_son['id']) == 6 && substr($result_son['id'], 2, 2) == 90) {
        //                 //先查询有没有创建省直辖的二级
        //                 $id = Region::where(['pid' => $results['id'], 'code' => $results['code'], 'level' => $results["level"] + 1])->value('id') ?? 0;
        //                 if (empty($id)) {
        //                     $id = Region::insertGetId(['pid' => $results['id'], 'code' => $results['code'], 'level' => $results["level"] + 1, 'name' => '省直辖']);
        //                 }
        //                 //查询有没有已经插入
        //                 $have = Region::where(['pid' => $id, 'code' => $result_son['id'], 'level' => $results["level"] + 2])->find();
        //                 if (empty($have)) {
        //                     Region::insert(['pid' => $id, 'code' => $result_son['id'], 'level' => $results["level"] + 2, 'name' => $result_son['name'], 'zx' => 1]);
        //                 }
        //             } else {
        //                 //查询有没有已经插入
        //                 $have = Region::where(['pid' => $results['id'], 'code' => $result_son['id'], 'level' => $results["level"] + 1])->find();
        //                 if (empty($have)) {
        //                     Region::insert(['pid' => $results['id'], 'code' => $result_son['id'], 'level' => $results["level"] + 1, 'name' => $result_son['name']]);
        //                 }
        //             }
        //         } catch (\Exception $e) {
        //             dump($e->getMessage());
        //         }
        //     }
        // }

        // //三级
        // $list = Region::where('level', 2)->select();
        // foreach ($list as $results) {
        //     $data = array(
        //         'fid' => $results['code'],
        //         'key' => 'f9ba465deeceb98812b17b36c283f970'
        //     );
        //     $result = api_curl('http://apis.juhe.cn/xzqh/query', $data, 0);
        //     $result = json_decode($result, true);
        //     foreach ($result['result'] as $result_son) {
        //         try {
        //             if (strlen($result_son['id']) == 9) {
        //                 //先查询有没有创建省直辖的二级
        //                 $id = Region::where(['pid' => $results['id'], 'code' => $results['code'], 'level' => $results["level"] + 1])->value('id') ?? 0;
        //                 if (empty($id)) {
        //                     $id = Region::insertGetId(['pid' => $results['id'], 'code' => $results['code'], 'level' => $results["level"] + 1, 'name' => '市直辖']);
        //                 }
        //                 //查询有没有已经插入
        //                 $have = Region::where(['pid' => $id, 'code' => $result_son['id'], 'level' => $results["level"] + 2])->find();
        //                 if (empty($have)) {
        //                     Region::insert(['pid' => $id, 'code' => $result_son['id'], 'level' => $results["level"] + 2, 'name' => $result_son['name'], 'zx' => 1]);
        //                 }
        //             } else {
        //                 //查询有没有已经插入
        //                 $have = Region::where(['pid' => $results['id'], 'code' => $result_son['id'], 'level' => $results["level"] + 1])->find();
        //                 if (empty($have)) {
        //                     Region::insert(['pid' => $results['id'], 'code' => $result_son['id'], 'level' => $results["level"] + 1, 'name' => $result_son['name']]);
        //                 }
        //             }
        //         } catch (\Exception $e) {
        //             dump($result_son);
        //             dump($e->getMessage());
        //         }
        //     }
        // }

        //四级
        $list = Region::where(['level' => 3])->select();
        foreach ($list as $lists) {
            $sons =  Region::where(['level' => 4, 'parent_id' => $lists['id']])->count();
            if ($sons == 0 && $lists['id'] > 600) {
                dump('空：' . $lists);
            }
        }
        // foreach ($list as $results) {
        //     $data = array(
        //         'id' => $results['area_code'],
        //         'key' => 'VT5BZ-AKQ3F-F54JJ-NUG2U-CERC6-D5BRO'
        //     );
        //     $result = api_curl('https://apis.map.qq.com/ws/district/v1/getchildren', $data, 0);
        //     $result = json_decode($result, true);
        //     if (!empty($result['result'][0])) {
        //         foreach ($result['result'][0] as $result_son) {
        //             $have = Region::where(['parent_id' => $results['id'], 'level' => 4, 'code' => $result_son['id']])->find();
        //             if (empty($have)) {
        //                 $arr = [
        //                     'parent_id' => $results['id'],
        //                     'level' => 4,
        //                     'area_code' => $results['area_code'],
        //                     'name' => $result_son['fullname'],
        //                     'code' => $result_son['id']
        //                 ];
        //                 Db::startTrans();
        //                 try {
        //                     (new Region())->save($arr);
        //                     Db::commit();
        //                 } catch (\Exception $e) {
        //                     dump($e->getMessage());
        //                     Db::rollback();
        //                 }
        //             }
        //         }
        //     } else {
        //         dump('空：' . $results['area_code']);
        //     }
        // }
    }
}
